// 导入验证规则的包

const joi = require('joi')


// 定义用户名和密码的验证规则
const student_id = joi.string().alphanum().min(1).max(10).required()

const password = joi.string().pattern(/^[\S]{6,12}$/).required()

// 定义 id, nickname, sex, phone 的验证规则
const nickname = joi.string().required()
const sex = joi.string().alphanum().min(0).max(1)
const phone = joi.string().alphanum()
const qq = joi.string()
const id_card = joi.string().min(18).max(18)
const user_name = joi.string();
const professional = joi.string();
const address  = joi.string();
const signature  = joi.string();
// 定义头像的验证规则
const head_img = joi.string()



// 定义验证注册和登录表单数据的规则对象
exports.reg_login_schema = {
    body: {
      student_id,
        id_card,
        user_name,
        professional
    }
}

// 验证规则对象 - 更新用户基本信息
exports.update_userinfo_schema = {
    // 对req.body 里面的数据进行验证
    body: {
      nickname,
      head_img,
      signature,
      sex,
      address,
      phone,
      qq
    },
  }

// 验证规则对象 - 重置密码
exports.update_password_schema = {
  body: {
    // 使用 password 这个规则，验证 req.body.oldPwd 的值
    oldPwd: password,
    // 使用 joi.not(joi.ref('oldPwd')).concat(password) 规则，验证 req.body.newPwd 的值
    // 解读：
    // 1. joi.ref('oldPwd') 表示 newPwd 的值必须和 oldPwd 的值保持一致
    // 2. joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
    // 3. .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
    newPwd: joi.not(joi.ref('oldPwd')).concat(password),
  },
}

// 验证规则对象 - 更新头像
// exports.update_avatar_schema = {
//   body: {
//     avatar,
//   },
// }

// 验证规则对象 - 忘记密码
exports.reg_forget_schema = {
    body: {
      student_id,
      newPwd: password,
      id_card,
      user_name,
  }
}
